/**
 * 
 */
package br.gov.sjc.dao;

import java.util.ArrayList;
import java.util.List;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
import br.gov.sjc.classes.DadosPessoais;


/**
 * @author rodrigo.ramos
 *
 */
public class DadosPessoaisDAO extends SQLiteOpenHelper {
	private static final String TABELA = "tab_DadosPessoais";
	private static final String DATABASE_NAME = BaseDAO.DATABASE_NAME;
	private static final int DATABASE_VERSION = BaseDAO.DATABASE_VERSION;
	private static final String[] COLS = {"_id", "SiasN", "idMembro", "Sexo","EstCivil","Estuda","Cor","Alfabetiza","FreqEscola","Trabalha","PCD"};
	
	public DadosPessoaisDAO(Context context) {
		super(context, DATABASE_NAME, null, DATABASE_VERSION);
	}

	@Override
	public void onCreate(SQLiteDatabase db) {
		String sql = "CREATE TABLE IF NOT EXISTS " + TABELA + 
		"(_id INTEGER PRIMARY KEY autoincrement," +
		" SiasN INTEGER," + 
		" idMembro INTEGER," +
		" Sexo TEXT," +
		" EstCivil TEXT," + 
		" Estuda TEXT, " +
		" Cor TEXT, " +
		" Alfabetiza TEXT, " +
		" FreqEscola TEXT, " +
		" Trabalha TEXT, " +
		" PCD TEXT " +
		");";
		db.execSQL(sql);
		/**/
	}

	@Override
	public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
		/**/
		db.execSQL("DROP TABLE IF EXISTS " + DadosPessoaisDAO.TABELA);
		this.onCreate(db);
	}
	
	public void inserir(DadosPessoais dp){ 
		ContentValues valores = new ContentValues();
		valores.put("SiasN", dp.getSiasN());
		valores.put("idMembro", dp.getIdMembro());
		valores.put("Sexo", dp.getSexo());
		valores.put("EstCivil", dp.getEstCivil());
		valores.put("Estuda", dp.getEstuda());
		valores.put("Cor", dp.getCor());
		valores.put("Alfabetiza", dp.getAlfabetiza());
		valores.put("FreqEscola", dp.getFreqEscola());
		valores.put("Trabalha", dp.getTrabalha());
		valores.put("PCD", dp.getPCD());
		
		getWritableDatabase().insert(TABELA, null, valores);
	}
	
	public List<DadosPessoais> getLista(){
		Cursor c = getWritableDatabase().query(TABELA, COLS, null, null, null, null, null);
		List<DadosPessoais> lista = new ArrayList<DadosPessoais>();
		while(c.moveToNext()){
			DadosPessoais dp = new DadosPessoais();
			dp.setSiasN(c.getInt(1));
			dp.setIdMembro(c.getInt(2));
			dp.setSexo(c.getString(3));
			dp.setEstCivil(c.getString(4));
			dp.setEstuda(c.getString(5));
			dp.setCor(c.getString(6));
			dp.setAlfabetiza(c.getString(7));
			dp.setFreqEscola(c.getString(8));
			dp.setTrabalha(c.getString(9));
			dp.setPCD(c.getString(10));
			
			lista .add(dp);
		}
		c.close();
		
		return lista;
		
	}

	public DadosPessoais getById(int posicao) {
		Cursor c = getWritableDatabase().query(TABELA, COLS, "_id=?", new String[]{"" + posicao}, null, null, null);
		c.moveToFirst();
		
		DadosPessoais dp = new DadosPessoais();
		dp.set_id(c.getInt(0));
		dp.setSiasN(c.getInt(1));
		dp.setIdMembro(c.getInt(2));
		dp.setSexo(c.getString(3));
		dp.setEstCivil(c.getString(4));
		dp.setEstuda(c.getString(5));
		dp.setCor(c.getString(6));
		dp.setAlfabetiza(c.getString(7));
		dp.setFreqEscola(c.getString(8));
		dp.setTrabalha(c.getString(9));
		dp.setPCD(c.getString(10));
		
		c.close();
		return dp;
	}

	public void alterar(DadosPessoais dp) {
		ContentValues valores = new ContentValues();
		valores.put("SiasN", dp.getSiasN());
		valores.put("idMembro", dp.getIdMembro());
		valores.put("Sexo", dp.getSexo());
		valores.put("EstCivil", dp.getEstCivil());
		valores.put("Estuda", dp.getEstuda());
		valores.put("Cor", dp.getCor());
		valores.put("Alfabetiza", dp.getAlfabetiza());
		valores.put("FreqEscola", dp.getFreqEscola());
		valores.put("Trabalha", dp.getTrabalha());
		valores.put("PCD", dp.getPCD());
		
		getWritableDatabase().update(TABELA, valores, "id=?", new String[]{"" + dp.getIdMembro()});
		
	}

	public boolean recreateTable(SQLiteDatabase db){
		boolean retorno = false;
		try {
	    	db.execSQL("DROP TABLE IF EXISTS " + TABELA);
	    	onCreate(db);
	    	retorno = true;
		}catch(Exception e){
			Log.e(TABELA,"ERRO MENSAGEM:"+e.getMessage());
        }
		
		
		return retorno;
	}
}
